home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 2).iso / 1074 / setup.mst < prev    next >
Text File  |  1997-04-16  |  7KB  |  250 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. DECLARE FUNCTION MaxWindow           LIB "mscuistf.dll" ( hWnd% )     AS INTEGER
  11.  
  12. ''Dialog ID's
  13. CONST WELCOME       = 100
  14. CONST ASKQUIT       = 200
  15. CONST DESTPATH      = 300
  16. CONST EXITFAILURE   = 400
  17. CONST EXITQUIT      = 600
  18. CONST EXITSUCCESS   = 700
  19. CONST OPTIONS       = 800
  20. CONST APPHELP       = 900
  21. CONST BADPATH       = 6400
  22.  
  23. ''Bitmap ID
  24. CONST LOGO = 1
  25.  
  26. GLOBAL DEST$        ''Default destination directory.
  27. GLOBAL OPTCUR$      ''Option selection from option dialog.
  28.  
  29. DECLARE SUB Install
  30. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  31.  
  32.  
  33. INIT:
  34.     n% = MaxWindow( HwndFrame )
  35.  
  36.     TITLE$ = "The Juker Setup"
  37.     DEST$ = "C:\JUKER"
  38.     OPTCUR$ = "3"
  39.  
  40.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  41.  
  42.     SetBitmap CUIDLL$, LOGO
  43.     SetTitle TITLE$
  44.  
  45.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  46.     IF szInf$ = "" THEN
  47.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  48.     END IF
  49.     ReadInfFile szInf$
  50.  
  51. '$IFDEF DEBUG
  52.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  53.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  54.     IF IsDriveValid(WinDrive$) = 0 THEN
  55.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  56.         GOTO QUIT
  57.     END IF
  58. '$ENDIF ''DEBUG
  59.  
  60.  
  61. WELCOME:
  62.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
  63.     IF sz$ = "CONTINUE" THEN
  64.         UIPop 1
  65.     ELSEIF sz$ = "REACTIVATE" THEN
  66.         GOTO WELCOME
  67.     ELSE
  68.         END
  69.     END IF
  70.  
  71.  
  72. OPTION:
  73.     SetSymbolValue "RadioDefault", OPTCUR$
  74. OPTL1:
  75.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", 0, "")
  76.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  77.  
  78.     IF sz$ = "CONTINUE" THEN
  79.         UIPop 1
  80.     ELSEIF sz$ = "REACTIVATE" THEN
  81.         GOTO OPTL1
  82.     ELSE
  83.         UIPop 1
  84.         GOTO WELCOME
  85.     END IF
  86.  
  87.  
  88. GETPATH:
  89.     SetSymbolValue "EditTextIn", DEST$
  90.     SetSymbolValue "EditFocus", "END"
  91. GETPATHL1:
  92.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  93.     DEST$ = GetSymbolValue("EditTextOut")
  94.  
  95.     IF sz$ = "CONTINUE" THEN
  96.         IF IsDirWritable(DEST$) = 0 THEN
  97.             GOSUB BADPATH
  98.             GOTO GETPATHL1
  99.         END IF
  100.         UIPop 1
  101.     ELSEIF sz$ = "REACTIVATE" THEN
  102.         GOTO GETPATHL1
  103.     ELSE
  104.         UIPop 1
  105.         GOTO WELCOME
  106.     END IF
  107.  
  108.  
  109.     Install
  110.  
  111.  
  112. QUIT:
  113.     ON ERROR GOTO ERRQUIT
  114.  
  115.     IF ERR = 0 THEN
  116.         dlg% = EXITSUCCESS
  117. ''    ELSEIF ERR = STFQUIT THEN
  118. ''        dlg% = EXITQUIT
  119.     ELSE
  120.         dlg% = EXITFAILURE
  121.     END IF
  122. QUITL1:
  123.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  124.     IF sz$ = "REACTIVATE" THEN
  125.         GOTO QUITL1
  126.     END IF
  127.     UIPop 1
  128.  
  129.     END
  130.  
  131. ERRQUIT:
  132.     i% = DoMsgBox("A fatal error occured -- maybe setup is corrupt?", "Fatal Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  133.     END
  134.  
  135.  
  136.  
  137. BADPATH:
  138.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  139.     IF sz$ = "REACTIVATE" THEN
  140.         GOTO BADPATH
  141.     END IF
  142.     UIPop 1
  143.     RETURN
  144.  
  145.  
  146.  
  147. ASKQUIT:
  148.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  149.  
  150.     IF sz$ = "EXIT" THEN
  151.         UIPopAll
  152.         ERROR STFQUIT
  153.     ELSEIF sz$ = "REACTIVATE" THEN
  154.         GOTO ASKQUIT
  155.     ELSE
  156.         UIPop 1
  157.     END IF
  158.     RETURN
  159.  
  160.  
  161.  
  162. '**
  163. '** Purpose:
  164. '**     Builds the copy list and performs all installation operations.
  165. '** Arguments:
  166. '**     none.
  167. '** Returns:
  168. '**     none.
  169. '*************************************************************************
  170. SUB Install STATIC
  171.  
  172.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  173.     CreateDir DEST$, cmoNone
  174.  
  175.     WINDIR$ = GetWindowsDir()
  176.     SYSDIR$ = GetWindowsSysDir()
  177.  
  178.     AddSectionFilesToCopyList "Common Files", SrcDir$, DEST$
  179. ''    AddSectionFilesToCopyList "Windows", SrcDir$, WINDIR$
  180.  
  181.     IF OPTCUR$ = "3" THEN
  182.       AddSectionFilesToCopyList "Option Files", SrcDir$, DEST$
  183.       AddSectionFilesToCopyList "System", SrcDir$, SYSDIR$
  184.     ELSE
  185.       AddSectionKeyFileToCopyList "Option Files", OPTCUR$, SrcDir$, DEST$
  186.       AddSectionKeyFileToCopyList "System", OPTCUR$, SrcDir$, SYSDIR$
  187.     ENDIF
  188.  
  189.     CopyFilesInCopyList
  190.  
  191.     SysIni$ = MakePath(WINDIR$, "SYSTEM.INI")
  192.     CreateIniKeyValue SysIni$, "mciseq.drv", "disablewarning", "true", cmoNone
  193.  
  194.     CreateIniKeyValue "WIN.INI", "mci extensions", "wav", "waveaudio", cmoNone
  195.     CreateIniKeyValue "WIN.INI", "mci extensions", "mid", "sequencer", cmoNone
  196.     CreateIniKeyValue "WIN.INI", "mci extensions", "mid", "sequencer", cmoNone
  197.     CreateIniKeyValue "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoNone
  198.     CreateIniKeyValue "WIN.INI", "Extensions", "alb", MakePath(DEST$,"juker16.exe ^.alb"), cmoOverwrite
  199.  
  200.     IF OPTCUR$ = "1" OR OPTCUR$ = "3" THEN
  201.       CreateProgmanItem "MMS Multimedia", "The Juker - 16bit", MakePath(DEST$,"juker16.exe"), "", cmoOverwrite
  202.     ELSEIF OPTCUR$ = "2" THEN
  203.       CreateProgmanItem "MMS Multimedia", "The Juker - 32bit", MakePath(DEST$,"juker32.exe"), "", cmoOverwrite
  204.     ENDIF
  205.  
  206.     CreateProgmanGroup "MMS Multimedia", "", cmoNone
  207.     ShowProgmanGroup  "MMS Multimedia", 1, cmoNone
  208.  
  209.     IF OPTCUR$ = "3" THEN
  210.       CreateProgmanItem "MMS Multimedia", "The Juker - 16bit", MakePath(DEST$,"juker16.exe"), "", cmoOverwrite
  211.       CreateProgmanItem "MMS Multimedia", "The Juker - 32bit", MakePath(DEST$,"juker32.exe"), "", cmoOverwrite
  212. ''      CreateProgmanItem "MMS Multimedia", "The Juker - 32bit", MakePath(DEST$,"juker32.exe"), "juker32.ico", cmoOverwrite
  213.     ELSEIF OPTCUR$ = "1" THEN
  214.       CreateProgmanItem "MMS Multimedia", "The Juker - 16bit", MakePath(DEST$,"juker16.exe"), "", cmoOverwrite
  215.     ELSEIF OPTCUR$ = "2" THEN
  216.       CreateProgmanItem "MMS Multimedia", "The Juker - 32bit", MakePath(DEST$,"juker32.exe"), "", cmoOverwrite
  217. ''      CreateProgmanItem "MMS Multimedia", "The Juker - 32bit", MakePath(DEST$,"juker32.exe"), "juker32.ico", cmoOverwrite
  218.     ENDIF
  219.  
  220.     CreateProgmanItem "MMS Multimedia", "The Juker's Help", MakePath(DEST$,"juker.hlp"), "", cmoOverwrite
  221.     CreateProgmanItem "MMS Multimedia", "The Juker's Survey", MakePath(DEST$,"survey.txt"), "", cmoOverwrite
  222.     CreateProgmanItem "MMS Multimedia", "Default Album", MakePath(DEST$,"default.alb"), "", cmoOverwrite
  223.  
  224. END SUB
  225.  
  226.  
  227.  
  228. '**
  229. '** Purpose:
  230. '**     Appends a file name to the end of a directory path,
  231. '**     inserting a backslash character as needed.
  232. '** Arguments:
  233. '**     szDir$  - full directory path (with optional ending "\")
  234. '**     szFile$ - filename to append to directory
  235. '** Returns:
  236. '**     Resulting fully qualified path name.
  237. '*************************************************************************
  238. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  239.     IF szDir$ = "" THEN
  240.         MakePath = szFile$
  241.     ELSEIF szFile$ = "" THEN
  242.         MakePath = szDir$
  243.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  244.         MakePath = szDir$ + szFile$
  245.     ELSE
  246.         MakePath = szDir$ + "\" + szFile$
  247.     END IF
  248. END FUNCTION
  249.  
  250.